import logging.handlers


# 函数定义，有一个形参
def init_log_config(filename):
    # 1. 创建日志器对象
    logger = logging.getLogger()
    # 2. 设置日志打印级别
    # logging.DEBUG 调试级别    # .debug()， .info(),  .waring() ……
    # logging.INFO 信息级别     # .debug()不能使用，     后面这些可以用：.info(),  .waring() ……
    # logging.WARNING 警告级别
    # logging.ERROR 错误级别
    # logging.CRITICAL 严重错误级别
    logger.setLevel(logging.INFO)

    # 3. 创建处理器对象
    # 输出到控制台
    st = logging.StreamHandler()
    # 输出到日志文件
    # when 是一个字符串，定义了日志切分的间隔时间单位
    # interval 是间隔时间单位的个数，指等待多少个 when 的时间后继续进行日志记录
    # backupCount 是保留日志的文件个数
    fh = logging.handlers.TimedRotatingFileHandler(filename,
                                                   when='midnight',
                                                   interval=1,
                                                   backupCount=7,
                                                   encoding='utf-8')

    # 4. 创建格式化器，打印的格式
    # fmt = "龙哥yyds [%(lineno)d]  ^_^%(levelname)s %(message)s"
    fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
    formatter = logging.Formatter(fmt)
    # 5. 给处理器设置格式化器
    st.setFormatter(formatter)
    fh.setFormatter(formatter)
    # 6. 给日志器添加处理器
    logger.addHandler(st)
    logger.addHandler(fh)


if __name__ == '__main__':
    # 函数调用
    init_log_config('test.log') # 配置信息，只需要调用一次

    # 日志打印，和print()用户一样
    logging.info('第一句话')
    logging.info('第2句话')
    logging.info('不高兴，不写了')
